home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 590 / 590.xpi / chrome / ipv6ident.jar / content / ipv6ident-pref.js < prev    next >
Text File  |  2009-12-10  |  13KB  |  363 lines

  1. /*
  2.     ShowIP Firefox Extension
  3.     Copyright (C) 2007 Jan Dittmer <jdi@l4x.org>
  4.  
  5.     This program is free software; you can redistribute it and/or modify
  6.     it under the terms of the GNU General Public License as published by
  7.     the Free Software Foundation; either version 2 of the License, or
  8.     (at your option) any later version.
  9.  
  10.     This program is distributed in the hope that it will be useful,
  11.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.     GNU General Public License for more details.
  14.  
  15.     You should have received a copy of the GNU General Public License
  16.     along with this program; if not, write to the Free Software
  17.     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  18. */
  19. var showipExtPrefs = {
  20.  
  21. Show: function() {
  22.     // for the mozilla suite
  23.     window.open("chrome://ipv6ident/content/ipv6ident-pref.xul", "ipv6prefs", "chrome,width=500,height=440,resizable");
  24. },
  25.  
  26. _UpdRows: function() {
  27.     var lb = document.getElementById("EntryList");
  28.     lb.setAttribute("rows",lb.childNodes.length+1);
  29. },
  30.  
  31. // clear complete listbox (from adblock)
  32. _ClearList: function() {
  33.     var lb = document.getElementById("EntryList");
  34.     lb.parentNode.replaceChild(lb.cloneNode(false), lb);
  35.     this._UpdRows();
  36. },
  37.  
  38. // add a cell to a list row
  39. _AddCell: function (li, label) {
  40.     var cell = document.createElement('listcell');
  41.     cell.setAttribute('label', label);
  42.     li.appendChild(cell);
  43. },
  44.  
  45. // add a row to the list
  46. _AddEntry: function(isipv4, isipv6, ishost, title, url) {
  47.     var lb = document.getElementById("EntryList");
  48.     var li = document.createElement("listitem");
  49.     this._AddCell(li, isipv4);
  50.     this._AddCell(li, isipv6);
  51.     this._AddCell(li, ishost);
  52.     this._AddCell(li, title);
  53.     this._AddCell(li, url);
  54.     lb.appendChild(li);
  55.     this._UpdRows();
  56. },
  57.  
  58. // set the global vars used in preferences and in the main program
  59. Init: function() {
  60.     this.prefs = Components.classes["@mozilla.org/preferences-service;1"].
  61.                 getService(Components.interfaces.nsIPrefBranch);
  62.     this.hiddentab = null;
  63.     this.newtab = null;
  64.     this.asyncresolve = true;
  65.     this.color = null;
  66.     this.menuurls = null;
  67.     this.ipv4style = 0; // 0:'d'ecimal, 1:'o'ctal, 2:'h'ex or 3:d'w'ord
  68. //var ipv6_menus = null;
  69.     this.cacheage = -1; // -1: infinite, 0: disable, else time in seconds
  70.     this.forcesocks = false;
  71.     var urls = null;
  72.     this.newservices = [];
  73.     //"46H|l4x.org - Official ShowIP DNS Tools|http://dnstools.l4x.org/##?src=showip",
  74.     this.defaulturls =[
  75.            "H|robtex.com - Host|http://www.robtex.com/dns/##.html",
  76.            "4|robtex.com - IP|http://www.robtex.com/ip/##.html",
  77.            "4H|ip2country.cc|http://www.ip2country.cc/?q=##",
  78.            "6|l4x.org|http://dnstools.l4x.org/##",
  79.            "46H|dns.l4x.org|http://dns.l4x.org/##",
  80.            "4|whois.sc|http://www.whois.sc/##",
  81.            "H|whoishostingthis.com|www.whoishostingthis.com/##",
  82.            "H|netcraft|http://uptime.netcraft.com/up/graph/?host=##",
  83.            "H|whois.sc|http://www.whois.sc/domain-explorer/?q=##&sub=Search&filter=y&pool=C&rows=100&bc=25&last="
  84.                ];
  85.  
  86.     // blacklisted urls...
  87.     this.urlbl = [
  88.         "ipv6tools.com","dnsstuff.com","esymbian.info"
  89.         ];
  90.     if (this.prefs.getPrefType("ipv6ident.urls") == this.prefs.PREF_STRING){
  91.         urls = this.prefs.getCharPref("ipv6ident.urls");
  92.     } else {
  93.         // default, first run...
  94.            urls = this.defaulturls.join('||')
  95.         this.newservices = this.defaulturls.join('||');
  96.     }
  97.     this.menuurls = urls;
  98.  
  99.     this.blacklist = [];
  100.     if (this.prefs.getPrefType("ipv6ident.blacklist") == this.prefs.PREF_STRING){
  101.         var x = this.prefs.getCharPref("ipv6ident.blacklist");
  102.         if (x) {
  103.             this.blacklist = x.split('|');
  104.         }
  105.     }
  106.     if (this.prefs.getPrefType("ipv6ident.newservices") == this.prefs.PREF_STRING){
  107.         // this remembers for which services we asked the user
  108.         // to add them to their list (domains only)
  109.         this.newservices = this.prefs.getCharPref("ipv6ident.newservices").split('|');
  110.     } else {
  111.         // do nothing, default is handled above
  112.     }
  113.  
  114.     if (this.prefs.getPrefType("ipv6ident.newtab") == this.prefs.PREF_BOOL){
  115.         this.newtab = this.prefs.getBoolPref("ipv6ident.newtab");
  116.     } else {
  117.         this.newtab = true;
  118.     }
  119.  
  120.     if (this.prefs.getPrefType("ipv6ident.hiddentab") == this.prefs.PREF_BOOL){
  121.         this.hiddentab = this.prefs.getBoolPref("ipv6ident.hiddentab");
  122.     } else {
  123.         this.hiddentab = true;
  124.     }
  125.  
  126.     if (this.prefs.getPrefType("ipv6ident.async") == this.prefs.PREF_BOOL){
  127.         this.asyncresolve = this.prefs.getBoolPref("ipv6ident.async");
  128.     } else {
  129.         this.asyncresolve = true;
  130.     }
  131.  
  132.  
  133.     this.color = new Array();
  134.     if (this.prefs.getPrefType("ipv6ident.color") == this.prefs.PREF_STRING){
  135.         this.color['unknown'] = this.prefs.getCharPref("ipv6ident.color");
  136.     } else {
  137.         this.color['unknown'] = "#000000";
  138.     }
  139.  
  140.     if (this.prefs.getPrefType("ipv6ident.colorv4") == this.prefs.PREF_STRING){
  141.         this.color['ipv4'] = this.prefs.getCharPref("ipv6ident.colorv4");
  142.     } else {
  143.         this.color['ipv4'] = "#FF0000";
  144.     }
  145.  
  146.     if (this.prefs.getPrefType("ipv6ident.colorv6") == this.prefs.PREF_STRING){
  147.         this.color['ipv6'] = this.prefs.getCharPref("ipv6ident.colorv6");
  148.     } else {
  149.         this.color['ipv6'] = "#00FF00";
  150.     }
  151.  
  152.     if (this.prefs.getPrefType("ipv6ident.ipv4style") == this.prefs.PREF_INT){
  153.         this.ipv4style = this.prefs.getIntPref("ipv6ident.ipv4style");
  154.     }
  155.     if (this.prefs.getPrefType("ipv6ident.cacheage") == this.prefs.PREF_INT){
  156.         this.cacheage = this.prefs.getIntPref("ipv6ident.cacheage");
  157.     }
  158.     if (this.prefs.getPrefType("ipv6ident.forcesocks") == this.prefs.PREF_BOOL){
  159.         this.forcesocks = this.prefs.getBoolPref("ipv6ident.forcesocks");
  160.     } else {
  161.         this.forcesocks = false;
  162.     }
  163.  
  164. },
  165.  
  166. yesno: function(text) {
  167.     var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
  168.         .getService(Components.interfaces.nsIPromptService);
  169.     var rv = ps.confirmEx(window, "ShowIP Add On", text,
  170.                         ps.BUTTON_TITLE_IS_STRING * ps.BUTTON_POS_0 +
  171.                         ps.BUTTON_TITLE_IS_STRING * ps.BUTTON_POS_1,
  172.                         "Yes", "No", null, null, {});
  173.     return !(rv == 1); // 0 == Yes == True...
  174. },
  175. checkblacklist: function() {
  176.     this.strings = document.getElementById("showip_strings");
  177.     var blacklist = this.blacklist;
  178.     var newservices = this.newservices;
  179.     var menuurls = this.menuurls;
  180.     // check for urls in the blacklist
  181.     for(var i = 0; i < this.urlbl.length; i++) {
  182.         if (blacklist.indexOf(this.urlbl[i]) != -1) {
  183.             continue;
  184.         }
  185.         blacklist[blacklist.length] = this.urlbl[i];
  186.         var s = this.strings.getFormattedString("askblacklist", [this.urlbl[i]]);
  187.         /* don't confuse the users.
  188.         var yes = this.yesno(s);
  189.         if (!yes) {
  190.             continue;
  191.         }
  192.         */
  193.  
  194.         var entries = menuurls.split("||");
  195.         var nentries = [];
  196.         for(var j = 0; j < entries.length; j++) {
  197.             if (entries[j].indexOf(this.urlbl[i]) == -1) {
  198.                 nentries[nentries.length] = entries[j];
  199.             } else {
  200.                 //alert("Removed " + entries[j]);
  201.             }
  202.  
  203.         }
  204.         menuurls = nentries.join('||');
  205.     }
  206.     // check for services which got recently added
  207.     for(i = 0; i < this.defaulturls.length; i++) {
  208.         var d = this.defaulturls[i].split('|');
  209.         //alert(d[1] + ' ' + d[2]);
  210.         var url = d[2];
  211.         if ( newservices.indexOf(url) != -1) {
  212.             // already asked
  213.             continue;
  214.         }
  215.         if ( menuurls.indexOf(url) != -1) {
  216.             // already in list
  217.             continue;
  218.         }
  219.         newservices[newservices.length] = url;
  220.         var s = this.strings.getFormattedString("asknewservice", [d[1]]);
  221.         /*
  222.         var yes = this.yesno(s);
  223.         if (!yes) {
  224.             continue;
  225.         }
  226.         */
  227.         var entries = menuurls.split("||");
  228.         entries[entries.length] = this.defaulturls[i];
  229.         menuurls = entries.join('||');
  230.  
  231.     }
  232.     this.prefs.setCharPref("ipv6ident.urls", menuurls); // keep this first!
  233.     this.prefs.setCharPref("ipv6ident.newservices", newservices.join('|'));
  234.     this.prefs.setCharPref("ipv6ident.blacklist", blacklist.join('|'));
  235.     /*
  236.     alert(this.blacklist.join('|'));
  237.     alert(this.newservices.join('|'));
  238.     alert(this.menuurls);
  239.     */
  240. },
  241.  
  242. DialogInit: function () {
  243.     this.Init();
  244.     var entries = this.menuurls.split("||");
  245.     for(var i = 0; i < entries.length; i++) {
  246.         var parts = entries[i].split("|");
  247.         if (parts.length != 3)
  248.             continue;
  249.         this._AddEntry( 
  250.             parts[0].indexOf("4") != -1,
  251.             parts[0].indexOf("6") != -1,
  252.             parts[0].indexOf("H") != -1,
  253.             parts[1],
  254.             parts[2]
  255.             );
  256.     }
  257.     document.getElementById("newtab").checked = this.newtab;
  258.     document.getElementById("hiddentab").disabled = !this.newtab;
  259.     document.getElementById("hiddentab").checked = this.hiddentab;
  260.     document.getElementById("async").checked = this.asyncresolve;
  261.     document.getElementById("ipv6_coldef").value = this.color['unknown'];
  262.     document.getElementById("ipv6_colv4").value = this.color['ipv4'];
  263.     document.getElementById("ipv6_colv6").value = this.color['ipv6'];
  264.     document.getElementById("ipv6_colpdef").color = this.color['unknown'];
  265.     document.getElementById("ipv6_colpv4").color = this.color['ipv4'];
  266.     document.getElementById("ipv6_colpv6").color = this.color['ipv6'];
  267.     document.getElementById("showip_stylev4").selectedIndex = this.ipv4style;
  268.     document.getElementById("showip_cacheage").value = this.cacheage;
  269.     document.getElementById("showip_forcesocks").checked = this.forcesocks;
  270. },
  271.  
  272. Save: function() {
  273.     this.prefs.setBoolPref("ipv6ident.hiddentab", document.getElementById("hiddentab").checked);
  274.     this.prefs.setBoolPref("ipv6ident.newtab", document.getElementById("newtab").checked);
  275.     this.prefs.setBoolPref("ipv6ident.async", document.getElementById("async").checked);
  276.  
  277.     this.prefs.setCharPref("ipv6ident.color", document.getElementById("ipv6_coldef").value);
  278.     this.prefs.setCharPref("ipv6ident.colorv4", document.getElementById("ipv6_colv4").value);
  279.     this.prefs.setCharPref("ipv6ident.colorv6", document.getElementById("ipv6_colv6").value);
  280.     this.prefs.setIntPref("ipv6ident.ipv4style", document.getElementById("showip_stylev4").selectedIndex);
  281.     this.prefs.setIntPref("ipv6ident.cacheage", document.getElementById("showip_cacheage").value);
  282.     this.prefs.setBoolPref("ipv6ident.forcesocks", document.getElementById("showip_forcesocks").checked);
  283.     var urls = "";
  284.     var lb = document.getElementById("EntryList");
  285.     // i = 2 to skip header
  286.     for(var i = 2; i < lb.childNodes.length; i++) {
  287.         var li = lb.childNodes[i];
  288.         var newstr = "";
  289.  
  290.         newstr += ((li.childNodes[0].getAttribute("label") == "true" )?"4":"");
  291.         newstr += ((li.childNodes[1].getAttribute("label") == "true" )?"6":"");
  292.         newstr += ((li.childNodes[2].getAttribute("label") == "true" )?"H|":"|");
  293.         newstr += li.childNodes[3].getAttribute("label") + "|";
  294.         newstr += li.childNodes[4].getAttribute("label");
  295.         if (newstr.indexOf("||") != -1) // this is the delimiter - don't save it.
  296.             continue;
  297.         urls = urls + "||" + newstr;
  298.     }
  299.     this.prefs.setCharPref("ipv6ident.urls", urls);
  300. },
  301.  
  302. AddEntry: function() {
  303.     this._AddEntry(
  304.         document.getElementById("entryIPv4").checked,
  305.         document.getElementById("entryIPv6").checked,
  306.         document.getElementById("entryHost").checked,
  307.         document.getElementById("entryTitle").value,
  308.         document.getElementById("entryURL").value);
  309.  
  310.     document.getElementById("entryTitle").value = "";
  311.     document.getElementById("entryURL").value = "";
  312. },
  313.  
  314. UpdEntry: function() {
  315.     var lb = document.getElementById("EntryList");
  316.     if (lb.selectedIndex == -1) {
  317.         alert("No item selected");
  318.         return;
  319.     }
  320.     var li = lb.selectedItem;
  321.     li.childNodes[0].setAttribute("label", document.getElementById("entryIPv4").checked);
  322.     li.childNodes[1].setAttribute("label", document.getElementById("entryIPv6").checked);
  323.     li.childNodes[2].setAttribute("label", document.getElementById("entryHost").checked);
  324.     li.childNodes[3].setAttribute("label", document.getElementById("entryTitle").value);
  325.     li.childNodes[4].setAttribute("label", document.getElementById("entryURL").value);
  326. },
  327.  
  328. DelEntry: function() {
  329.     var lb = document.getElementById("EntryList");
  330.     if (lb.selectedIndex == -1) {
  331.         alert("No item selected");
  332.         return;
  333.     }
  334.     lb.removeChild(lb.selectedItem);
  335.     this._UpdRows();
  336. },
  337.  
  338. CopyEntry: function() {
  339.     var lb = document.getElementById("EntryList");
  340.     if (lb.selectedIndex == -1)
  341.         return;
  342.     var li = lb.selectedItem;
  343.     document.getElementById("entryIPv4").checked = (li.childNodes[0].getAttribute("label") == "true" );
  344.     document.getElementById("entryIPv6").checked = (li.childNodes[1].getAttribute("label") == "true" );
  345.     document.getElementById("entryHost").checked = (li.childNodes[2].getAttribute("label") == "true" );
  346.     document.getElementById("entryTitle").value = li.childNodes[3].getAttribute("label");
  347.     document.getElementById("entryURL").value =  li.childNodes[4].getAttribute("label");
  348. },
  349.  
  350. NewtabClick: function() {
  351.     var newtab = document.getElementById("newtab").checked;
  352.     document.getElementById("hiddentab").disabled = !newtab;
  353. },
  354.  
  355. updatecolor: function(picker, id) {
  356.     document.getElementById(id).value = picker.color;
  357. },
  358.  
  359. updatecolorp: function(textbox, id) {
  360.     document.getElementById(id).color = textbox.value;
  361. }
  362. };
  363.